#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//int is_prime(int n)
//{
//    for (int i = 2; i <= n / 2 + 1; i++)
//    {
//        if (n % i == 0)
//            return 0;
//    }
//    return 1;
//}
//int main()
//{
//	int n, m;
//	int count = 0;
//	scanf("%d %d", &n, &m);
//	for (int i = n; i <= m; i++)
//	{
//		if (i % 2 == 0)
//		{
//			int found = 0;
//			for (int j = 2; j <= i / 2; j++)
//			{
//				if (is_prime(i) && is_prime(i - j))
//				{
//					count++;
//					if (count % 5 != 1)
//					{
//						printf(",%d=%d+%d", i, j, i - j);
//					}
//					else if(count%5==1&&count!=1)
//						printf("%d=%d+%d", i, j, i - j);
//					if (count % 5 == 0)
//						printf("\n");
//					found = 1;
//				}
//				if (found==1)
//					break;
//			}
//		}
//
//	}
//	if (count==0)
//		printf("no result!");
//	return 0;
//}
//#include <stdio.h>
//int is_prime(int n)
//{
//    for (int i = 2; i <= n/2+1; i++)
//    {
//        if (n % i == 0)
//            return 0;
//    }
//    return 1;
//}
//int main()
//{
//    int n, m;
//    int count = 0;
//    scanf("%d %d", &n, &m);
//    for (int i = n; i <= m; i++)
//    {
//        if (i % 2 == 0)
//        {
//            int found = 0;
//            for (int j = 2; j <= i / 2; j++)
//            {
//                if (is_prime(j) && is_prime(i - j))
//                {
//                    count++;
//                    if (count % 5 != 1&&count % 5 !=0)
//                    {
//                        printf(",%d=%d+%d", i, j, i - j);
//                    }
//                    else if (count % 5 == 1)
//                    {
//                        printf("%d=%d+%d", i, j, i - j);
//                    }
//                    else if (count % 5 == 0)
//                    {
//                        printf(",%d=%d+%d\n",i,j,i-j);
//                    }
//                    found = 1;
//                }
//                if (found == 1)
//                    break;
//            }
//        }
//    }
//    if (count == 0)
//        printf("no result!");
//    return 0;
//}
#include <stdio.h>
void swap(int* a, int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
int partition(int arr[], int low, int high)
{
    int pivot = arr[high];
    int i = low - 1;

    for (int j = low; j < high; j++) {
        if (arr[j] < pivot) {
            i++;
            swap(&arr[i], &arr[j]);
        }
    }
    swap(&arr[i + 1], &arr[high]);
    return i + 1;
}

void quickSort(int arr[], int low, int high)
{
    if (low < high)
    {
        int pi = partition(arr, low, high);

        quickSort(arr, low, pi - 1);
        quickSort(arr, pi + 1, high);
    }
}
int main()
{
    int n;
    scanf("%d", &n);
    int arr[100000];
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    quickSort(arr, 0, n - 1);
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }

    return 0;
}

